package com.hmdp.utils;

import com.hmdp.dto.UserDTO;

/**
 * 用户线程持有器，用于在当前线程保存和获取登录用户的简要信息（UserDTO）
 */
public class UserHolder {
    private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>();

    /**
     * 将用户信息保存到当前线程
     * @param user 要保存的用户信息
     */
    public static void saveUser(UserDTO user){
        tl.set(user);
    }

    /**
     * 从当前线程获取保存的用户信息
     * @return 如果存在则返回 UserDTO，否则返回 null
     */
    public static UserDTO getUser(){
        return tl.get();
    }

    /**
     * 从当前线程移除保存的用户信息，避免线程复用导致的内存/数据污染
     */
    public static void removeUser(){
        tl.remove();
    }
}
